<?php

namespace app;

use think\Model as ThinkModel;

/**
 * @property int $id
 * @property string $create_time
 * @property string $update_time
 */
class BaseModel extends ThinkModel
{
    /**
     * 获取getter信息
     *
     * @param string $info
     * 
     * @return string
     */
    protected function getterInfo($info = ''): string
    {
        $namespace = debug_backtrace()[1]['class'];
        // 获取当前调用的方法
        $functionName = debug_backtrace()[1]['function'];
        // 获取当前调用的方法对应的属性名称
        $propertyName = preg_match('/^get(.*?)Attr$/', $functionName, $matches) ? $matches[1] : $functionName;
        // 获取值，也就是第一个参数
        $changeValue = debug_backtrace()[1]['args'][0] ?? '';

        return "[get|$namespace::$propertyName -> $changeValue] " . $info;
    }
    /**
     * 获取setter信息
     *
     * @param string $info
     * 
     * @return string
     */
    protected function setterInfo($info = ''): string
    {
        $namespace = debug_backtrace()[1]['class'];
        // 获取当前调用的方法
        $functionName = debug_backtrace()[1]['function'];
        // 获取当前调用的方法对应的属性名称
        $propertyName = preg_match('/^set(.*?)Attr$/', $functionName, $matches) ? $matches[1] : $functionName;
        // 修改值，也就是第一个参数
        $changeValue = debug_backtrace()[1]['args'][0] ?? '';

        return "[set|$namespace::$propertyName <- $changeValue] " . $info;
    }
}